最近项目中需要用到数据的导出到Word,本在项目中使用POI将数据导入到Word,和Excel导出类似,先将jar包导入进去(我这里就省去导jar包啦),我直接上实现过程吧!
1、导入POI jar包;
2、创建新的Word模板,如下图:

3、JSP页面按钮定义如下:
- <button type="button" onclick="toInsuranceExcel()" class="button button-primary button-small">导出Word </button>
4、JS中点击事件(包括参数传递、发送请求)代码如下:
- /* 导出Word */
- function toInsuranceExcel(){
- var curpagenum = $('#contentGroupOrderTable').getGridParam('page');
- $("#page").val(curpagenum);
- var startTime=$('#startTime').val();
- var endTime=$('#endTime').val();
- var receiveMode=$('#receiveMode').val();
- var groupCode=$('#groupCode').val();
- var supplierName=$('#supplierName').val();
-
- var orgIds=$('#orgIds').val();
- var orgNames=$('#orgNames').val();
- var operType=$('#operType').val();
- var saleOperatorIds=$('#saleOperatorIds').val();
- var saleOperatorName=$('#saleOperatorName').val();
-
- var orderMode=$('#dicIds').val();
- var remark=$('#remark').val();
- var page=$('#page').val();
- var pageSize=$('#pageSize').val();
- var userRightType=$('#userRightType').val();
-
- var guestName=$('#guestName').val();
- var gender=$('#gender').val()
- var ageFirst=$('#ageFirst').val()
- var ageSecond=$('#ageSecond').val()
- var nativePlace=$('#nativePlace').val()
-
- window.location ='../taobao/downloadInsure.htm?startTime='+startTime
- +"&endTime="+endTime
- +"&receiveMode="+receiveMode
- +"&groupCode="+groupCode
- +"&supplierName="+supplierName
- +"&orgIds="+orgIds
- +"&orgNames="+orgNames
- +"&operType="+operType
- +"&saleOperatorIds="+saleOperatorIds
- +"&saleOperatorName="+saleOperatorName
- +"&orderMode="+orderMode
- +"&remark="+remark
- +"&page="+page
- +"&pageSize="+pageSize
- +"&userRightType="+userRightType
- +"&guestName="+guestName
- +"&gender="+gender
- +"&ageFirst="+ageFirst
- +"&ageSecond="+ageSecond
- +"&nativePlace="+nativePlace;
- }
5、Java后台Controller代码实现方法如下:
- /**
- * 投保单
- *
- * @param groupId
- * @param request
- * @param response
- */
- @RequestMapping("downloadInsure.htm")
- public void downloadInsureFile(HttpServletRequest request, HttpServletResponse response,
- String startTime,String endTime,String receiveMode,String groupCode,String supplierName,
- String orgIds,String orgNames,String operType,String saleOperatorIds,String saleOperatorName,
- String orderMode,String remark,Integer page,Integer pageSize,Integer userRightType,
- String guestName,Integer gender,Integer ageFirst,Integer ageSecond,String nativePlace){
- try {
- // 处理中文文件名下载乱码
- request.setCharacterEncoding("UTF-8");
- } catch (UnsupportedEncodingException e1) {
- e1.printStackTrace();
- }
- String path = "";
- String fileName = "";
-
- // 投保书
- try {
- fileName = new String("投保书.doc".getBytes("UTF-8"), "iso-8859-1");
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- path = saleInsurance( request, response, startTime, endTime, receiveMode, groupCode, supplierName,
- orgIds, orgNames, operType, saleOperatorIds, saleOperatorName,
- orderMode, remark, page, pageSize, userRightType,
- guestName, gender, ageFirst, ageSecond, nativePlace);
-
- response.setCharacterEncoding("utf-8");
- response.setContentType("application/msword"); // word格式
- try {
- response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
- File file = new File(path);
- InputStream inputStream = new FileInputStream(file);
- OutputStream os = response.getOutputStream();
- byte[] b = new byte[10240];
- int length;
- while ((length = inputStream.read(b)) > 0) {
- os.write(b, 0, length);
- }
- inputStream.close();
- os.flush();
- os.close();
- file.delete();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
调用的saleInsurance方法如下:
- /**
- *投保书
- *
- * @param request
- * @param orderId
- * @return
- */
- public String saleInsurance(HttpServletRequest request, HttpServletResponse response,
- String startTime,String endTime,String receiveMode,String groupCode,String supplierName,
- String orgIds,String orgNames,String operType,String saleOperatorIds,String saleOperatorName,
- String orderMode,String remark,Integer page,Integer pageSize,Integer userRightType,
- String guestName,Integer gender,Integer ageFirst,Integer ageSecond,String nativePlace){
- // TourGroup tg = tourGroupService.findByGroupCode(groupCode);
- String url = request.getSession().getServletContext().getRealPath("/") + "/download/"
- + System.currentTimeMillis() + ".doc";
- String realPath = request.getSession().getServletContext().getRealPath("/template/guestInsurances.docx");
- WordReporter export = new WordReporter(realPath);
- try {
- export.init();
- } catch (IOException e) {
- e.printStackTrace();
- }
-
- GroupOrder vo = new GroupOrder();
- vo.setPage(page);
- vo.setPageSize(pageSize);
- vo.setStartTime(startTime);
- vo.setEndTime(endTime);
- vo.setRemark(remark);
- vo.setGuestName(guestName);
- vo.setOrderNo(orderMode);
- vo.setGroupCode(groupCode);
- vo.setSaleOperatorIds(saleOperatorIds);
- vo.setOrgIds(orgIds);
- vo.setOperType(Integer.valueOf(operType));
- vo.setReceiveMode(receiveMode);
- vo.setOrgNames(orgNames);
- vo.setSaleOperatorName(saleOperatorName);
- vo.setSupplierName(supplierName);
- vo.setGender(gender);
- vo.setAgeFirst(ageFirst);
- vo.setAgeSecond(ageSecond);
- vo.setNativePlace(nativePlace);
-
- if (StringUtils.isBlank(vo.getSaleOperatorIds()) && StringUtils.isNotBlank(vo.getOrgIds())) {
- Set<Integer> set = new HashSet<Integer>();
- String[] orgIdArr = vo.getOrgIds().split(",");
- for (String orgIdStr : orgIdArr) {
- set.add(Integer.valueOf(orgIdStr));
- }
- set = platformEmployeeService.getUserIdListByOrgIdList(WebUtils.getCurBizId(request), set);
- String salesOperatorIds = "";
- for (Integer usrId : set) {
- salesOperatorIds += usrId + ",";
- }
- if (!salesOperatorIds.equals("")) {
- vo.setSaleOperatorIds(salesOperatorIds.substring(0, salesOperatorIds.length() - 1));
- }
- }
- PageBean pageBean = new PageBean();
- if (page == null) {
- pageBean.setPage(1);
- } else {
- pageBean.setPage(page);
- }
- if (pageSize == null) {
- pageBean.setPageSize(10000);
- } else {
- pageBean.setPageSize(10000);
- }
- pageBean.setParameter(vo);
- pageBean.setPage(page);
- pageBean = groupOrderService.selectGroupOrderGuestListPage(pageBean, WebUtils.getCurBizId(request),
- WebUtils.getDataUserIdSet(request),userRightType);
-
- List<Map<String, String>> guestList = new ArrayList<Map<String, String>>();
- Map<String, String> map = null, mapTemp = null;
- int index = 0;
- if (pageBean.getResult() != null && pageBean.getResult().size() > 0) {
- int firstSum = pageBean.getResult().size() / 2;
- for (int i = 0; i < firstSum; i++) {
- map = (HashMap) pageBean.getResult().get(i);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- mapTemp = new HashMap<String, String>();
- mapTemp.put("number", index + 1 + "");
- mapTemp.put("code", (String) map.get("receive_mode"));
- mapTemp.put("guestName", (String) map.get("name"));
- mapTemp.put("cerNum", (String) map.get("certificate_num"));
- mapTemp.put("snumber", "");
- mapTemp.put("scode", "");
- mapTemp.put("sguestName", "");
- mapTemp.put("scerNum", "");
- guestList.add(mapTemp);
- index++;
- }
-
- for (int i = firstSum; i < pageBean.getResult().size(); i++) {
- map = (HashMap) pageBean.getResult().get(i);
- mapTemp = isAddNewRow(guestList);
- if (mapTemp == null) {
- mapTemp = new HashMap<String, String>();
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- mapTemp.put("number", index + 1 + "");
- mapTemp.put("code", (String) map.get("receive_mode"));
- mapTemp.put("guestName", (String) map.get("name"));
- mapTemp.put("cerNum", (String) map.get("certificate_num"));
- guestList.add(mapTemp);
- } else {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- mapTemp.put("snumber", index + 1 + "");
- mapTemp.put("scode", (String) map.get("receive_mode"));
- mapTemp.put("sguestName", (String) map.get("name"));
- mapTemp.put("scerNum", (String) map.get("certificate_num"));
- }
- index++;
- }
-
- }
-
- Map<String, Object> mapHeader = new HashMap<String, Object>();
- mapHeader.put("company", WebUtils.getCurBizInfo(request).getName()); // 当前单位
- mapHeader.put("operator", WebUtils.getCurUser(request).getName());
- mapHeader.put("printTime", DateUtils.format(new Date()));
- mapHeader.put("opTel", WebUtils.getCurUser(request).getMobile());
- mapHeader.put("groupCode", "");
- mapHeader.put("person", String.valueOf(pageBean.getTotalCount()));
- mapHeader.put("guide", "");
- mapHeader.put("departureDate", "");
- mapHeader.put("maxDay", "");
- mapHeader.put("numDay", "");
-
- try {
- export.export(mapHeader, 0);
- export.export(guestList, 1);
- export.generate(url);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return url;
- }
到这里代码就写完了,点击【导出Word】按钮就会下载了。如图所示:

下载好后直接打开即可。Word部分内容如下:
